package io;

import java.io.*;

/**
 * 使用缓冲字符输入流BufferedReader按行读取字符串
 * 内部默认维护一个8192长的char数组，可以块读文本数据保证读取效率
 * 提供了readLine()方法可以按行读取字符串
 */
public class BrDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("./src/io/BrDemo.java");
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);

        /*
           readLine()读取一行字符串
           1)内部实现
              首先第一次调用readLine时, 会一次性读取8192个字符存入内部数组中
              然后从数组第1个字符开始读取, 知道遇到\n换行符位置, 会将读取到的内容一亿个字符串形式返回
           2)返回结果:
             2.1)读到\n换行符, 返回一行字符串
             2.2)读到空行, 则返回空字符串
             2.3)读到了末尾, 则返回null
         */
        String line;
        while((line=br.readLine())!=null){
            System.out.println(line);
        }
        br.close();
    }
}
